﻿<Serializable()> Public Class Pedido
    'Set y gets
    Public Property NombreCliente As String
    Public Property FechaPedido As Date
    Public Property PrecioProductos As New Dictionary(Of String, Decimal)
    Public Property CantidadProductos As New Dictionary(Of String, Integer)
    Public Property PrecioTotal As Decimal
    Public Property Confirmado As Boolean

    Public Sub New(ByVal nombreCliente As String, ByVal fechaPedido As Date)
        _NombreCliente = nombreCliente
        _FechaPedido = fechaPedido
        _Confirmado = False
    End Sub

    Public Function ComprobarPedido(ByVal nombre As String, ByVal cantidad As String) As String

        If nombre = "" Then
            Return "Falta por introducir el nombre de la mesa"
        End If

        If nombre.Length < 2 Then
            Return "El nombre es demasiado corto"
        End If

        If cantidad = "" Then
            Return "Falta por introducir la capacidad de la mesa"
        End If

        If Not IsNumeric(cantidad) Then
            Return "La capacidad tiene que ser un dato numérico"
        End If

        If Integer.Parse(cantidad) < 1 OrElse Integer.Parse(cantidad) > 50 Then
            Return "La capacidad debe estar entre 1 y 30"
        End If

        Return "OK"

    End Function


    Public Sub AñadirProducto(ByVal producto As String, ByVal precioProducto As Decimal, ByVal cantidadProducto As Integer)

        _PrecioProductos.Add(producto, precioProducto)
        _CantidadProductos.Add(producto, cantidadProducto)

        _PrecioTotal = CalcularTotal()
    End Sub

    Public Sub CambiarCantidad(ByVal producto As String, ByVal cantidadProducto As Integer)
        _CantidadProductos(producto) = cantidadProducto
        _PrecioTotal = CalcularTotal()
    End Sub

    Public Sub EliminarProducto(ByVal producto As String)
        _PrecioProductos.Remove(producto)
        _CantidadProductos.Remove(producto)
        _PrecioTotal = CalcularTotal()
    End Sub

    Private Function CalcularTotal() As Decimal

        Dim total As Decimal = 0

        For i As Integer = 0 To PrecioProductos.Count - 1
            total = total + _PrecioProductos(_PrecioProductos.Keys(i)) * _CantidadProductos(_CantidadProductos.Keys(i))
        Next

        Return total

    End Function

End Class
